var areaAuditoriaHtml; // contiene el html perteneciente al area para auditar
var semaforosChanges = []; //permite llevar un registro de los campos cambiados
var listInputChanges = []; //lista de los nombres de los campos para auditar
var nombreModelo; //nombre del modelo para auditar, prefijado por "_"
$(function() {
    nombreModelo = "Institucion_";
    areaAuditoriaHtml = $("#areaAuditoria");
    semaforosChanges = [-1, -1];
    listInputChanges = ["#Institucion_correo", "#Institucion_nombre"];
    encontrarEnLista();

    $("#Institucion_correo").on('change', function() {
        encontrarEnLista()
    });
    $("#Institucion_nombre").on('change', function() {
        encontrarEnLista();
    });

});

/**
 * Permite recorrer todos los campos a ser auditados, es activado con cualquier otro campo para auditar
 */
function encontrarEnLista() {
    for (var i = 0; i < listInputChanges.length; i++) {
        var temp = listInputChanges[i];
        detectarCambios($(temp).attr('id'), i);
    }
    administrarHtmlAuditoria();

}
/**
 * Comprueba que sea posible eliminar el area para auditar
 * @returns {Boolean}
 */
function validarListaValoresCambiados() {
    var aux = true;
    var auxInt = 0, i;
    for (i = 0; i < listInputChanges.length; i++) {
        if (semaforosChanges[i] === 0) {
            aux = true;
            auxInt++;
        } else {
            return false;
        }
    }
    if (auxInt === i) {
        return true;
    }
    return aux;
}


/**
 * Elimina o agrega html del area para auditar tomando en cuenta el metodo validarListaValoresCambiados
 * @returns {Boolean}
 */
function administrarHtmlAuditoria() {
    if (validarListaValoresCambiados() === true) {
        removeAreaAuditoria();
        return true;
    } else {
        agregarAreaAuditoria();
        return false;
    }
}

/**
 * Trigger que se activa cada ves que se realiza un cambio en los campos para auditar
 * @param {String} idCampo id del campo
 * @param {int} pos identificador de posicion para el vector semaforosChanges[]
 */

function detectarCambios(idCampo, pos) {
    var campo = idCampo;
    campo = campo.replace(nombreModelo, "");

    if (oldModel[campo] === $("#" + idCampo + "").val()) {
        semaforosChanges[pos] = 0; //quita auditoria
    } else {
        semaforosChanges[pos] = 1;//agrega auditoria
    }
    console.log(idCampo + "  " + (oldModel[campo] === $("#" + idCampo + "").val()) + "  " + semaforosChanges[pos]);
}

/**
 * Elimina el area para auditar
 */
function removeAreaAuditoria() {
    $("#areaAuditoria").remove();
}
/**
 * Agrega el area para auditar
 */
function agregarAreaAuditoria() {
    $("#contenedorAuditoria").html(areaAuditoriaHtml);
}
